<?php

namespace app\home\controller;

use Alipay\EasySDK\Kernel\Config;
use Alipay\EasySDK\Kernel\Factory;
use app\Base;

use app\model\Es;
use app\service\home\IndexService;
use app\service\home\UploadService;
use app\tools\Logs;
use Exception;
use PHPExcel_Exception;
use PHPExcel_Reader_Exception;
use think\facade\Request;
use think\response\Json;
use think\response\View;

/**
 *
 * User : Du
 * Date : 2022/4/7
 * Time : 10:32
 * Class Index
 * package projects\controller\home
 */
class Index extends Base
{
    /**
     * 默认首页
     *
     * User : Du
     * Date : 2022/4/7
     * Time : 10:33
     * @return
     * @throws
     */
    public function index()
    {
        dd(123);

        return json([
            'data' => $a,
            "code" => 0,
            "msg" => "",
            "count" => 10
        ]);

        //连接es服务
        $es = new Es('test', 'shop');
        $a = $es->createIndex();//定义字段
        $p = [
            'id' => [
                'type' => 'long',  //数值型 分两类 1：基本数据类型：long、interger、short、byte、double、float、half_float 2：浮点数的高精度类型：scaled_float 需要指定一个精度因子，比如10或100。elasticsearch会把真实值乘以这个因子后存储，取出时再还原。
                'index' => 'false',
            ],
            'title' => [
                'type' => 'text',  //string类型下分两种  1：text：可做分词 分词匹配 2：keyword：不可做分词即全匹配
                'analyzer' => 'ik_max_word',
            ],
            'desc' => [
                'type' => 'text',
                'index' => 'true',
                'analyzer' => 'ik_max_word',
            ],
            'image' => [
                'type' => 'keyword',
                'index' => 'false'
            ],
            'read_count' => [
                'type' => 'long',
            ],
            'create_time' => [
                'type' => 'long'
            ],
        ];
        $b = $es->createMappings($p);
        dd($b);

        return view('home/index');
    }

    /**
     * 测试12
     *
     * User : Du
     * Date : 2022/3/23
     * Time : 15:21
     * @param IndexService $service
     * @return Json
     */
    public function test(IndexService $service): Json
    {
//        $data = [
//            ['id' => 1, 'title' => '李彦宏、雷军、程维等出席中国互联网协会新春茶话会', 'desc' => '2月17日，2023中国互联网发展座谈会暨中国互联网协会新春茶话会在京召开。工业和信息化部党组成员、副部长张云明出席会议并讲话。座谈会由中国互联网协会理事长尚冰主持', 'image' => 'http://cms-bucket.ws.126.net/2023/0219/0400ae35p00rqauly002dc0009c0070c.png?imageView&thumbnail=190y120', 'read_count' => 6, 'create_time' => 1676787816],
//            ['id' => 2, 'title' => '开发者展示华为鸿蒙 HarmonyOS 3.1 新功能，包括通知中心动效等', 'desc' => 'IT之家 2 月 19 日消息，在去年的华为开发者大会上，华为发布了 HarmonyOS 3.1 开发者预览版本，开启了对 API 9 的支持，并且在本月初开启了针对开发者的Beta 公测招募。', 'image' => 'http://cms-bucket.ws.126.net/2023/0219/2466422dj00rqbczp0020c0009c0070c.jpg?imageView&thumbnail=190y120', 'read_count' => 23, 'create_time' => 1676787832],
//            ['id' => 3, 'title' => '外卖赛道挤进新玩家，但你期待的补贴大战恐难再现', 'desc' => '中新经纬2月19日电 (常涛)外卖行业长达5年的平静被新玩家打破。近日，抖音、微信先后传出了下场做外卖的消息。虽然两家的回应都回避了“外卖”字眼，但从体验来看，无论是抖音的“团购配送”，还是微信的“门店快送”，均与外卖无差异。', 'image' => 'http://cms-bucket.ws.126.net/2023/0219/95554c55p00rqbaf900ikc0009c0070c.png?imageView&thumbnail=190y120', 'read_count' => 25, 'create_time' => 1676787910],
//            ['id' => 4, 'title' => '理想L7躺枪！吉利银河首款智能电混SUV命名正式公布', 'desc' => '【智车派新闻】近日，吉利宣布旗下全新的中高端新能源系列正式命名为“吉利银河”，该系列将于2月23日与“吉利品牌新能源战略”一同发布，系列首款车型也将同步首发亮相。2月19日，智车派从官方了解到，吉利银河首款智能电混SUV命名为“银河L7”', 'image' => 'http://cms-bucket.ws.126.net/2023/0219/66e6bfd6p00rqbaa3003yc0009c0070c.png?imageView&thumbnail=190y120', 'read_count' => 1545, 'create_time' => 1676787910],
//            ['id' => 5, 'title' => '大病一场，997博士后Nature发感悟：搞学术不能太卷', 'desc' => '学术界普遍存在过度加班的情况，毕竟不拿出「拼命三郎」的架势，很难在「追求知识」的道路上走的比别人快', 'image' => 'http://cms-bucket.ws.126.net/2023/0219/1c7c4478p00rqba9d0027c0009c0070c.png?imageView&thumbnail=190y120', 'read_count' => 352, 'create_time' => 1676787910],
//            ['id' => 6, 'title' => '字节变慢，OKR先“砍一刀”', 'desc' => '一路狂飙的字节跳动，正在从 OKR 层面“降速”（ OKR 即目标与关键成果法，会将公司战略目标逐步、分级拆解为每个员工的工作目标，员工自下而上完成 OKR 进而推动公司目标实现）', 'image' => 'http://cms-bucket.ws.126.net/2023/0219/368d51c5p00rqausm0028c0009c0070c.png?imageView&thumbnail=190y120', 'read_count' => 51215, 'create_time' => 1676787910],
//            ['id' => 7, 'title' => '特斯拉回应温州事故致1死1伤：非常难过，将全力配合警方调查', 'desc' => 'Tech星球2月18日消息，日前，浙江温州瑞安市一辆黑色特斯拉高速行驶追尾公交车的消息引发热议。商家的监控视频显示，车经过一跨河拱桥时，几乎要“飞”了起来，最后在塘川北街200号附20号附近，追尾一辆正常行驶的小型公交车后停下', 'image' => 'http://cms-bucket.ws.126.net/2023/0219/d9ec206bp00rqauny001pc0009c0070c.png?imageView&thumbnail=190y120', 'read_count' => 252, 'create_time' => 1676787910],
//            ['id' => 8, 'title' => 'VC/PE如何出手中国版ChatGPT？投资人：先从AI核心基础设施做起', 'desc' => '在经历了2022年消费赛道的寒冬之后，稳健的投资人都已知道，只有沉得住气，才不会成为风口基金', 'image' => 'http://cms-bucket.ws.126.net/2023/0219/6d7d1968p00rqbagm0059c0009c0070c.png?imageView&thumbnail=190y120', 'read_count' => 6, 'create_time' => 1676787910],
//        ];
//        $es = new Es('test', 'shop');
//        foreach ($data as $v) {
//            $a = $es->addData($v['id'], $v);
//        }
        dd('ok');
    }

    public function test1()
    {
        $id = 3;
        $data = [
            'title' => '外卖赛道挤进新玩家，但你期待的补贴大战恐难再现123465651865',
            'read_count' => 60,
        ];
        $es = new Es('test', 'shop');
        $res = $es->updateData($id, $data);
        dd($res);
    }

    /**
     * 视频播放页面
     *
     * User : Du
     * Date : 2022/3/31
     * Time : 13:47
     * @return View
     */
    public function video(): View
    {
        return view('/home/video/index');
    }

    /**
     * excel 上传页面
     *
     * User : Du
     * Date : 2022/4/7
     * Time : 18:03
     * @return View
     */
    public function excel(): View
    {
        return view('home/excel');
    }

    /**
     * excel 上传处理
     *
     * User : Du
     * Date : 2022/4/7
     * Time : 18:03
     * @return Json
     * @throws PHPExcel_Exception
     * @throws PHPExcel_Reader_Exception
     */
    public function excelUpload(): Json
    {
        $res = UploadService::excelUpload();
        if (!$res) {
            return $this->returnData(1, '处理失败，请重新上传');
        } else {
            $this->res['data'] = $res;
        }
        return $this->returnData();
    }


    /**
     * 上传图片
     *
     * User : Du
     * Date : 2022/4/7
     * Time : 18:03
     * @return Json
     */
    public function imgUpload(): Json
    {
        $res = UploadService::imgUpload();
        if (!$res) {
            return $this->returnData(1, '上传图片失败');
        } else if ($res < 0) {
            return $this->returnData(1, '图片不符合规则，请重新选择图片');
        } else {
            $this->res['data'] = $res;
        }
        return $this->returnData();
    }

    /**
     * 更新在线用户
     *
     * User : Du
     * Date : 2022/3/23
     * Time : 14:47
     * @param IndexService $service
     * @return Json
     * @throws Exception
     */
    public function onlineUser(IndexService $service): Json
    {
        $res = $service::onlineUser();
        return $this->returnData();
    }

    /**
     * 用户通信id绑定
     *
     * User : Du
     * Date : 2022/3/23
     * Time : 17:04
     * @param IndexService $service
     * @return Json
     * @throws Exception
     */
    public function chatBingUser(IndexService $service): Json
    {
        $res = $service::chatBingUser(input());
        return $this->returnData();
    }

    /**
     * 获取在线用户
     *
     * User : Du
     * Date : 2022/3/26
     * Time : 16:19
     * @param IndexService $service
     * @return Json
     */
    public function getOnlineUser(IndexService $service): Json
    {
        $res = $service::getOnlineUser();
        $this->res['data'] = $res;
        return $this->returnData();
    }

}

